package orderoid.soap.business;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import orderoid.soap.Tool.DeserialisationTool;
import orderoid.soap.classeCommune.Produit;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.os.AsyncTask;
import android.util.Log;

public class webRechercherIdProduitFromRestauAnProdName extends AsyncTask<String, Void, List<Produit>>
{

	private static final String	PARAM_IDRESTAURANT	= "idRestaurant";

	@Override
	protected List<Produit> doInBackground(String... params)
	{
		String idRestaurant = params[0];
		String[] commandTokenized = params[1].split(";;");
		List<String> productsNameNeedId = new ArrayList<String>();

		for (int i = 1; i < commandTokenized.length; i++)
		{
			productsNameNeedId.add(commandTokenized[i]);
		}

		List<Produit> listeProduit = new ArrayList<Produit>();

		Log.e("Test", "doInBackground : WebService Recherche product id from product name ");

		SoapObject request = new SoapObject(orderoid.soap.constant.method.NAMESPACE, orderoid.soap.constant.method.METHOD_NAME_RECHERCHE_PRODUIT);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

		envelope.setOutputSoapObject(request);

		HttpTransportSE androidHttpTransport = new HttpTransportSE(orderoid.soap.constant.method.URL);

		request.addProperty(PARAM_IDRESTAURANT, idRestaurant);

		try
		{
			androidHttpTransport.call(orderoid.soap.constant.method.SOAP_ACTION_RECHERCHE_PRODUIT, envelope);

			@SuppressWarnings("unchecked")
			Vector<SoapObject> soapObjectResp = (Vector<SoapObject>) envelope.getResponse();

			for (SoapObject soC : soapObjectResp)
			{
				listeProduit.add(DeserialisationTool.deserialisationProduit(soC));
			}

		} catch (Exception e)
		{
			Log.e("Erreur :", e.getMessage());
			listeProduit = null;
		}

		// maintenant on va recuperé que les items qui nous interesse
		List<Produit> listProduitTarget = new ArrayList<Produit>();

		for (int i = 0; i < productsNameNeedId.size(); i++)
		{
			boolean found = false;
			for (int j = 0; j < listeProduit.size() && !found; j++)
			{
				if (productsNameNeedId.get(i).equals(listeProduit.get(j).getNom()))
				{
					listProduitTarget.add(listeProduit.get(j));
					found = true;
				}
			}
			//Dans le cas ou l'on ne trouve pas le produit qui nous interesse
			if (!found)
			{
				Log.e("Found item", "Item " + productsNameNeedId.get(i) + " not found");
			}

		}
				return listProduitTarget;
	}

}
